package core

import (
	"gintify/config"
	"github.com/casbin/casbin/v2"
	"gorm.io/gorm"
	"github.com/spf13/viper"
	"go.uber.org/zap"
)

// 定义全局变量
var (
	DB *gorm.DB           // 数据库句柄
	CE *casbin.Enforcer   // Casbin
	VP *viper.Viper       // 配置句柄
	CF config.Config      // 配置
	LG *zap.SugaredLogger // 日志句柄
)

// 执行初始化
func New(env string) {
	// 遵循 配置 -> 日志 -> 数据库 -> Casbin 次序
	VP = Viper(env)
	LG = Logger()
	switch CF.Database {
	case "sqlite":
		DB = Sqlite()
	case "mysql":
		DB = Mysql()
	case "postgres":
		DB = Postgres()
	default:
		DB = Mysql()
	}
	CE = Casbin()
	NewJwt()
}

func GetLogger() *zap.SugaredLogger {
	return LG
}


